//package com.vids;
//
//import java.util.concurrent.Callable;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//import java.util.concurrent.Future;
//import java.util.stream.IntStream;
//
///**
// * ConcurrentMD5类，它使用固定大小的线程池来并行计算一定范围内数字的和。
// *
// * calculateSum方法将任务分割到多个线程上，并通过Future对象获取计算结果。SumCalculatorTask是一个Callable任务，它计算给定范围内的数字和。
// *
// * main方法展示了如何使用这个计算器类来计算从1到100的数字和。
// */
//public class ConcurrentMD5
//{
//    private final ExecutorService executorService;
//    private final int numThreads;
//
//    public ConcurrentMD5(int numThreads) {
//        this.numThreads = numThreads;
//        this.executorService = Executors.newFixedThreadPool(numThreads);
//    }
//
//    public int calculateSum(int start, int end) {
//        int range = end - start + 1;
//        int chunkSize = range / numThreads;
//
//        Future<Integer>[] futures = new Future[numThreads];
//        for (int i = 0; i < numThreads; i++) {
//            int startIndex = start + i * chunkSize;
//            int endIndex = startIndex + chunkSize - 1;
//            if (i == numThreads - 1) {
//                endIndex = end;
//            }
//            futures[i] = executorService.submit(new SumCalculatorTask(startIndex, endIndex));
//        }
//
//        int sum = 0;
//        for (int i = 0; i < numThreads; i++) {
//            try {
//                sum += futures[i].get();
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//
//        return sum;
//    }
//
//    private static class SumCalculatorTask implements Callable<Integer> {
//        private final int start;
//        private final int end;
//
//        public SumCalculatorTask(int start, int end) {
//            this.start = start;
//            this.end = end;
//        }
//
//        @Override
//        public Integer call() {
//            return IntStream.rangeClosed(start, end).sum();
//        }
//    }
//
//    public static void main(String[] args) {
//        ConcurrentMD5 calculator = new ConcurrentMD5(4);
//        int sum = calculator.calculateSum(1, 100);
//        System.out.println("Sum: " + sum);
//    }
//}